import axios from 'axios';
import qs from 'qs';
import { API } from './utils';
// import { message } from 'antd';
/**
 * 请求封装 request
 * @param {*} method 请求形式 get post
 * @param {*} url api
 * @param {*} params 
 */
//跨域访问需要发送cookie时
// axios.defaults.withCredentials = true;

// const warning = (msg) => {
// 	message.warning(msg);
// };
// const info = (msg) => {
// 	message.info(msg);
// };
const request = ({ method = 'get', url, data = '' }) => {
	const config = {};
	if (method === 'get') config.params = data;
	if (method === 'post') {
		config.headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
		if (!(data instanceof FormData)) config.data = qs.stringify(data);
		else config.data = data;
	}

	axios.interceptors.response.use(
		(response) => {
			if (response.status === 200) return response;
			else alert('服务器异常，请重试');
		},
		(error) => {
			// 对响应错误做点什么
			return Promise.reject(error);
		}
	);

	url = API + url;
	// url = API + url + '?t=' + new Date().getTime();

	return new Promise((resolve, reject) => {
		axios({ ...config, url, method }).then((data) => {
			// console.log(data);
			// alert(JSON.stringify(data));
			const { code } = data.data;
			if (code === 'ok') {
				resolve(data);
			} else {
				alert(data.data.msg);
			}
			// if (code === 'noLogin') {
			// 	warning(data.data.msg);
			// 	setTimeout(() => {
			// 		window.location.replace('/login');
			// 	}, 2000);
			// } else if (code === 'ok') {
			// 	resolve(data);
			// } else if (code === 'timeout') {
			// 	info(data.data.msg);
			// 	setTimeout(() => {
			// 		window.location.replace('/login');
			// 	}, 2000);
			// } else if (code === 'error' || code === 'fail') {
			// 	warning(data.data.msg);
			// }
		});
	});
};
export default request;
// // get
// request({ url: '/per/getMenuPermission', data: {} }).then((data) => {
// 	this.setState({ menuList: data.data.data });
// 	return data;
// });

// //监听用户名变化
// // post
// request({ method: 'post', url: '/per/getMenuPermission', data: {} }).then((data) => {
// 	this.setState({ menuList: data.data.data });
// 	return data;
// });
